package itcast.lsf.ur;

import itcast.lsf.dao.imp.UserDaoImp;
import itcast.lsf.domain.User;
import itcast.lsf.domain.User2;
import itcast.lsf.service.imp.UserServiceImp;
import org.springframework.context.support.ClassPathXmlApplicationContext;

//classPath继承了beanFactory:创建对象，产用立即加载，适合单例场景，只创建一次
// beanFactory工厂模式：延迟加载，多例，什么适合使用，什么时候创建


/* 了解即可： ClassPathXmlApplicationContext： 读取类路径下的配置文件，就是resources目录下的文件
             FileSystemXmlApplicationContext：读取磁盘上面的任意位置的配置文件
             AnnotationConfigApplicationContext：读取注解类型的配置文件*/
public class UserTest {
    public static void main(String[] args) {
        //读取配置文件,获取spring核心容器
        //classPath（单例）继承了beanFactory（延迟加载，多例）工厂模式
        ClassPathXmlApplicationContext cpac = new ClassPathXmlApplicationContext("bean.xml");
        //根据配置中id唯一标志获取权限类，由spring自动创建实体对象
        //classPath产用的是立即加载的方式，适用于单例
        UserDaoImp userDao = (UserDaoImp) cpac.getBean("userDao");
        System.out.println(userDao);
        userDao.toSave();
        System.out.println("===============111");
        UserServiceImp userService = (UserServiceImp) cpac.getBean("userService");
        System.out.println(userService);
        userService.testService();
        System.out.println("================222");

        //有参构造执行，bean的参数注入
        User user = (User) cpac.getBean("user");
       user.testPut();
        System.out.println("==============3333");
       //set的bean类对象的参数注入
        User2 user2 = (User2) cpac.getBean("user2");
        user2.testPut2();
    }
}
